﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace Atlandiz.EnvanterVeZimmetYonetimi
{
    public partial class FormParaBirimleri : DevExpress.XtraEditors.XtraForm
    {
        int KayID = 0;
        string EditedSembol = "";

        public FormParaBirimleri()
        {
            InitializeComponent();
        }

        private void _btnKapat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public void ListParaBirimleri() {
            
            _lwParaBirimleri.Items.Clear();
            DataTable dt = Army.SQL().GetDataTable("Select * from ParaBirimleri");
            if (dt.Rows.Count > 0) {

                foreach (DataRow x in dt.Rows) {

                    ListViewItem lw = new ListViewItem(x[0].ToString());
                    lw.SubItems.Add(x[1].ToString());
                    lw.SubItems.Add(x[2].ToString());
                    lw.SubItems.Add(x[3].ToString());
                    if (bool.Parse(x[4].ToString()))
                    {
                        lw.SubItems.Add("Evet");
                    }
                    else {
                        lw.SubItems.Add("");
                    }
                    _lwParaBirimleri.Items.Add(lw);
                }
            }        
        }

        private void FormParaBirimleri_Load(object sender, EventArgs e)
        {

            if (!YardimciSiniflar.IsTableExist("ParaBirimleri"))
            {

                try
                {
                    String Sorgu = "CREATE TABLE [dbo].[ParaBirimleri](\n" +
                        "	[id] [int] IDENTITY(1,1) NOT NULL,\n" +
                        "	[ParaBirimi] [nvarchar](100) NULL,\n" +
                        "	[Sembol] [nvarchar](10) NULL,\n" +
                        "	[Kur] [money] NULL,\n" +
                        "	[isDefault] [bit] NULL,\n" +
                        " CONSTRAINT [PK_ParaBirimleri] PRIMARY KEY CLUSTERED \n" +
                        "(\n" + "	[id] ASC\n" +
                        ")WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]\n" +
                        ") ON [PRIMARY]\n";

                    Army.SQL().cmd(Sorgu);
                    Army.SQL().cmd("INSERT INTO ParaBirimleri(ParaBirimi,Sembol,Kur,isDefault) VALUES('Türk Lirası','TL',1,1)");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Hata Mesajı:\n" + ex.Message.ToString(), "Hata Oluştu", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.Close();
                }
            }
            
            Temizle();
            ListParaBirimleri();
        }

        private void silToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_lwParaBirimleri.SelectedItems.Count > 0) {

                Army.EventMessage = "Seçilen Kayıt Silinecek\nEmin misiniz?";
                PopupAreYouSure EH = new PopupAreYouSure();
                EH.ShowDialog();

                if (Army.EventConfirm) {
                    Army.SQL().cmd("Delete from ParaBirimleri where id=" + _lwParaBirimleri.SelectedItems[0].SubItems[0].Text);
                    ListParaBirimleri();
                } 
            }
        }

        public void KayitAc(int id) {
            DataRow Kayit = Army.SQL().GetDataRow("Select * from ParaBirimleri where id=" + id);
            KayID = int.Parse(Kayit[0].ToString());
            _txtParaBirimiString.Text = Kayit["ParaBirimi"].ToString();
            _txtSembolString.Text = Kayit["Sembol"].ToString();
            EditedSembol = Kayit["Sembol"].ToString();
            if (bool.Parse(Kayit["isDefault"].ToString())) _cbisDefault.Checked=true;
            _txtKurMoney.Text = Kayit["Kur"].ToString();
        }
        private void düzenleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_lwParaBirimleri.SelectedItems.Count > 0)
            {
                KayitAc(int.Parse(_lwParaBirimleri.SelectedItems[0].SubItems[0].Text.ToString()));
            }
        }

        public void Temizle() {
            KayID = 0;
            EditedSembol = "";

            _txtParaBirimiString.Text = "";
            _txtSembolString.Text = "";
            _cbisDefault.Checked = false;
            _txtKurMoney.Text = "0";
            
            _txtParaBirimiString.Focus();
        }

        private void _btnKaydet_Click(object sender, EventArgs e)
        {
            if (_txtParaBirimiString.Text.Length < 1) {
                MessageBox.Show("Para Birimi boş olamaz!", "Eksik Veri", MessageBoxButtons.OK, MessageBoxIcon.Information);
                _txtParaBirimiString.Focus();
                return;
            }

            if (_txtSembolString.Text.Length < 1)
            {
                MessageBox.Show("Sembol boş olamaz!", "Eksik Veri", MessageBoxButtons.OK, MessageBoxIcon.Information);
                _txtSembolString.Focus();
                return;
            }

            if (_txtKurMoney.Text.Length < 1)
            {
                _txtKurMoney.Text = "0";
                MessageBox.Show("Kur 0.1'den küçük değer alamaz!", "Eksik Veri", MessageBoxButtons.OK, MessageBoxIcon.Information);
                _txtKurMoney.Focus();
                return;
            }

            if (double.Parse(_txtKurMoney.Text) < 0.1) {
                MessageBox.Show("Kur 0.1'den küçük değer alamaz!", "Eksik Veri", MessageBoxButtons.OK, MessageBoxIcon.Information);
                _txtKurMoney.Focus();
                return;
            }
            
            if (KayID == 0)
            {
                int Varmi = int.Parse(Army.SQL().GetDataCell("Select count(*) from ParaBirimleri where ParaBirimi='" + _txtParaBirimiString.Text.Replace("'", "''").Trim() + "' OR Sembol='" + _txtSembolString.Text.Replace("'", "''").Trim() + "'"));
                if (Varmi > 0) {
                    MessageBox.Show("Bu Para Birimi veya Sembol zaten kayıtlı!", "Hatalı İşlem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    _txtParaBirimiString.Focus();
                    return;
                }

                if (_cbisDefault.Checked) Army.SQL().cmd("Update ParaBirimleri SET isDefault=0");
                Army.SQL().cmd("INSERT INTO ParaBirimleri(ParaBirimi,Sembol,Kur,isDefault) VALUES('" + _txtParaBirimiString.Text.Replace("'", "''").Trim() + "','" + _txtSembolString.Text.Replace("'", "''").Trim() + "'," + _txtKurMoney.Text.Replace(",",".") + ",'" + _cbisDefault.Checked + "')");
                Temizle();
                ListParaBirimleri();
            }
            else {
                int Varmi = int.Parse(Army.SQL().GetDataCell("Select count(*) from ParaBirimleri where (ParaBirimi='" + _txtParaBirimiString.Text.Replace("'", "''").Trim() + "' OR Sembol='" + _txtSembolString.Text.Replace("'", "''").Trim() + "') and id<>" + KayID));
                if (Varmi > 0)
                {
                    MessageBox.Show("Bu Para Birimi veya Sembol zaten kayıtlı!", "Hatalı İşlem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    _txtParaBirimiString.Focus();
                    return;
                }
                if (_cbisDefault.Checked) Army.SQL().cmd("Update ParaBirimleri SET isDefault=0");
                Army.SQL().cmd("UPDATE ParaBirimleri SET ParaBirimi='" + _txtParaBirimiString.Text.Replace("'", "''").Trim() + "',Sembol='" + _txtSembolString.Text.Replace("'", "''").Trim() + "',Kur=" + _txtKurMoney.Text.Replace(",", ".") + ",isDefault='" + _cbisDefault.Checked + "' where id=" + KayID);

                Army.SQL().cmd("Update Cihaz set MaliyetDoviz='" + _txtSembolString.Text.Replace("'","''").Trim() + "' where MaliyetDoviz='" + EditedSembol + "'");
                Army.SQL().cmd("Update Cihaz set ZimmetDegeriDoviz='" + _txtSembolString.Text.Replace("'", "''").Trim() + "' where ZimmetDegeriDoviz='" + EditedSembol + "'");
                Army.SQL().cmd("Update Yazilim set MaliyetDoviz='" + _txtSembolString.Text.Replace("'", "''").Trim() + "' where MaliyetDoviz='" + EditedSembol + "'");
                Army.SQL().cmd("Update Yazilim set ZimmetDegeriDoviz='" + _txtSembolString.Text.Replace("'", "''").Trim() + "' where ZimmetDegeriDoviz='" + EditedSembol + "'");

                Temizle();
                ListParaBirimleri();
            }
        }

        private void _btnKurlariGuncelle_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Bu Özellik henüz etkin değil.");

        }
    }
}